package cn.edu.gduf.luowowo.member.service;

import cn.edu.gduf.luowowo.common.exception.LogicException;
import cn.edu.gduf.luowowo.member.domain.UserInfo;

import java.util.List;

/**
 * 管理用户的接口
 */
public interface IUserInfoService {
    /**
     * 获取指定id用户信息
     *
     * @param id 用户id
     * @return 返回用户对象
     */
    UserInfo get(Long id);

    /**
     * 检查当前手机号码是否注册过
     *
     * @param phone 手机号码
     * @return true表示注册过，false表示没有注册过
     */
    boolean checkPhone(String phone);

    /**
     * 发送验证码
     *
     * @param phone 手机
     */
    void sendVerifyCode(String phone);

    /**
     * 用户注册方法
     *
     * @param phone      手机
     * @param nickname   昵称
     * @param password   密码
     * @param rpassword  重复密码
     * @param verifyCode 验证码
     */
    void register(String phone, String nickname, String password, String rpassword,
                String verifyCode) throws LogicException;

    /**
     * 用户登录
     * @param username 用户名
     * @param password 密码
     * @return 返回token，一个cookie返回给浏览器
     */
    String userLogin(String username, String password) throws LogicException;

    List<UserInfo> list();

    int getCountForConcern(Long id);

    int getCountForFans(Long id);

    List<Long> getConcernId(Long id);

    List<UserInfo> queryConcernByIds(List<Long> arry);

    int getCountForCoins(Long id);

    void updateById(UserInfo user);

    void updateHearderById(String headImg, Long id);

    void update(UserInfo userInfo);

    void focus(Long id, Long uid);

    UserInfo selectByPrimaryKey(Long id);

    String updateUserLogin(UserInfo u);

    void updatePhone(String phone, String newMobile);
}
